В прошлом шаге мы вставили класс GRID в вид, нам нужно обрабатывать события и AppWizard здесь не помощник будем делать ручками. Объявляем в классе вида что у нас будут извещения.
class CTestViewGridView : public CView
{
protected: // create from serialization only
CTestViewGridView();
DECLARE_DYNCREATE(CTestViewGridView)
DECLARE_EVENTSINK_MAP()
// Attributes
public:
CTestViewGridDoc* GetDocument();
private:
CMsDgridCtrl cmg;
// Operations
......
};
Реализуем эту таблицу обработки извещений.
BEGIN_EVENTSINK_MAP(CTestViewGridView, CView) ON_EVENT(CMsDgridCtrl, IDC_DBGRID1, -602 /* KeyDown */, OnKeyDownDbgrid1, VTS_PI2 VTS_I2) END_EVENTSINK_MAP()
Первый параметр это класс, второй идентификатор элемента, его нужно использовать в Create.
int CTestViewGridView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rc;
GetClientRect(&rc);
cmg.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, IDC_DBGRID1);
cmg.ShowWindow(SW_SHOW);
return 0;
}
Дальше идет номер метода, откуда его брать. Проше всего сделать как в "Шаг 363 - Обработка событий DBGRID в VC", получить эту строку и перенести в проект класса с видом. Вообщем передрать можно все кстати и описание функции реакции.
class CTestViewGridView : public CView
{
protected: // create from serialization only
CTestViewGridView();
DECLARE_DYNCREATE(CTestViewGridView)
DECLARE_EVENTSINK_MAP()
// Attributes
public:
......
public:
afx_msg void OnKeyDownDbgrid1(short FAR* KeyCode, short Shift);
virtual ~CTestViewGridView();
#ifdef _DEBUG
};
Ну и реализовать саму функцию
void CTestViewGridView::OnKeyDownDbgrid1(short FAR* KeyCode, short Shift)
{
AfxMessageBox("OK");
}
Запускаем и смотрим:
